package br.com.delogic.simuladorbancario.main.model;

import java.util.HashMap;
import java.util.Map;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JTextField;

/**
 *
 * @author NB1
 */
public enum JLimpador {
    TEXT_FIELD(JTextField.class) {
        @Override
        public void limpar(JComponent componente) {
            JTextField t = (JTextField) componente;
            t.setText(null);
        }
    }, COMBO_BOX(JComboBox.class){

        @Override
        public void limpar(JComponent componente) {
            
        }
    }, CHECK_BOX(JCheckBox.class){

        @Override
        public void limpar(JComponent componente) {
            
        }
    };
    
    private final Class<? extends JComponent> type;
    private static final Map<Class<? extends JComponent>, JLimpador> limpadoresPorTipo = new HashMap<Class<? extends JComponent>, JLimpador>();
    
    static {
        for (JLimpador limp : values()) {
            limpadoresPorTipo.put(limp.type, limp);
        }
    }
    
    public static <T extends JComponent> JLimpador fromType(T componente) {
        return limpadoresPorTipo.get(componente.getClass());
    }
    
    private JLimpador(Class<? extends JComponent> type) {
        this.type = type;
    }
    
    
    public abstract void limpar(JComponent componente);
}
